/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package SemanticoPacote;
import compilador_full.TabelaSimbolos;
/**
 *
 * @author Loreno
 */
class ExpressaoLogica {

    public static void expLogica(TabelaSimbolos tabelaSimbolos, String escopo) {

        
        //
        String TipoAtual = "";
        // define o tipo da variável
        if (tabelaSimbolos.RetornaTipoDeGlobalDeclarada(tabelaSimbolos.getLookahead()).equals("")) {
            // existe tipo
            TipoAtual = tabelaSimbolos.RetornaTipoDeLocalDeclarada(tabelaSimbolos.getLookahead(), escopo);
        } else {
            TipoAtual = tabelaSimbolos.RetornaTipoDeGlobalDeclarada(tabelaSimbolos.getLookahead());
        }
        //
        // seta o ultimo tipo
        tabelaSimbolos.setUltimoTipoVar(TipoAtual);
        //
        TermoLogico.termoLogico(tabelaSimbolos, escopo);//consome termo logico


        while(tabelaSimbolos.getLookahead().equals("||")) {
            tabelaSimbolos.soConsome();//consome ||

            // define o tipo da variável
            if (tabelaSimbolos.RetornaTipoDeGlobalDeclarada(tabelaSimbolos.getLookahead()).equals("")) {
                // existe tipo
                TipoAtual = tabelaSimbolos.RetornaTipoDeLocalDeclarada(tabelaSimbolos.getLookahead(), escopo);
            } else {
                TipoAtual = tabelaSimbolos.RetornaTipoDeGlobalDeclarada(tabelaSimbolos.getLookahead());
            }
            //
            // seta o ultimo tipo
            tabelaSimbolos.setUltimoTipoVar(TipoAtual);
        //

            TermoLogico.termoLogico(tabelaSimbolos, escopo);//consome termo logico
        }       
    }
}
